/**
 * ResultModel.java
 *
 * Created on 27 Март 2008 г., 1:23
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */
package trim.gui.testing.models;

import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;
import trim.common.result.Pattern;
import trim.common.result.TrimResult;
import trim.common.result.TrimmedFormatOrder;

/**
 * Модель для отображения результирующих раскроев
 *
 * @author Дмитрий
 */
public class ResultTableModel extends AbstractTableModel
{

  private TrimResult tr;

  /** Creates a new instance of ResultModel */
  public ResultTableModel()
  {
    setTr(new TrimResult());
  }

  public ResultTableModel(TrimResult tr)
  {
    this.setTr(tr);
  }

  public int getRowCount()
  {
    return getTrimResult().size();
  }

  @Override
  public String getColumnName(int column)
  {
    if(column==0)
      return "N";
    else if(column==1)
      return "Pattern";
    else if(column==getColumnCount()-1)
      return "tail";
    else if(column==getColumnCount()-2)
      return "use";
    else if(column==getColumnCount()-3)
      return "material";
    else
      return " ";
  }

	@Override
  public int getColumnCount()
  {
    return 5;
  }

	@Override
  public Object getValueAt(int rowIndex,int columnIndex)
  {
    Pattern p=getTrimResult().get(rowIndex);
    if(columnIndex==0)
      return p.getCount();
    if(columnIndex==getColumnCount()-1)
      return p.getPatternTail();
    if(columnIndex==getColumnCount()-2)
      return p.getPatternUsedArea();
    if(columnIndex==getColumnCount()-3)
      return p.getMaterial().getLength();
    if(p.size()<columnIndex)
      return "";
    else
    {
			List<int[]> l=new ArrayList<int[]>();
			l.add(new int[]{p.getMaterial().getLength(),p.getMaterial().getLength()});
      //StringBuilder sb=new StringBuilder();
      for(TrimmedFormatOrder fc:p.getTrimmedFormatOrders())
				l.add(new int[]{fc.getFormat().getLength(),fc.getCount()});
        //sb.append(fc.getFormat().getLength()+"*"+fc.getCount()+" ");
      return l;//sb.toString();
    }
  }

  @Override
  public Class<?> getColumnClass(int columnIndex)
  {
    switch(columnIndex)
    {
      case 0:
        return Integer.class;
      case 1:
        return List.class;
      case 2:
        return Integer.class;
      case 3:
        return Integer.class;
      case 4:
        return Integer.class;
    }
    return super.getColumnClass(columnIndex);
  }

  public TrimResult getTrimResult()
  {
    return tr;
  }

  public void setTr(TrimResult tr)
  {
    this.tr=tr;
    fireTableDataChanged();
  }
}
